using System.IO;

namespace Woolpert.Compression
{
    /// <summary>
    /// Zips up files and folders
    /// </summary>
    public interface IZip
    {
        /// <summary>
        /// Generates zip files
        /// </summary>
        /// <param name="zipFilePath">Path of zip file to create</param>
        /// <param name="directoryToZip">The top level directory to zip up</param>
        /// <param name="recursive">Would you like to zip up subdirectories as well?</param>
        void GenerateZipFile(string zipFilePath, string directoryToZip, bool recursive);

        /// <summary>
        /// Extracts files from a zip archive
        /// </summary>
        /// <param name="zipFile">Path of the zip file to create or overwrite</param>
        /// <param name="directoryToUnzipTo">The existing directory to put unzipped files into</param>
        void UnzipZipFile(string zipFile, string directoryToUnzipTo);

        /// <summary>
        /// Compress a single file
        /// </summary>
        /// <param name="zipFilePath">The archive file to create or overwrite</param>
        /// <param name="fileToCompress">The single file to compress</param>
        void GenerateZipFile(string zipFilePath, FileInfo fileToCompress);
    }
}
